home *** CD-ROM | disk | FTP | other *** search
/ Enter 2005 October / enter-2005-10.iso / files / jedit42install.exe / {app} / modes / perl.xml < prev    next >
Encoding:
Extensible Markup Language  |  2004-08-29  |  17.3 KB  |  602 lines

  1. <?xml version="1.0"?>
  2.  
  3. <!DOCTYPE MODE SYSTEM "xmode.dtd">
  4.  
  5. <MODE>
  6.     <PROPS>
  7.         <PROPERTY NAME="lineComment" VALUE="#" />
  8.         <PROPERTY NAME="indentOpenBrackets" VALUE="{" />
  9.         <PROPERTY NAME="indentCloseBrackets" VALUE="}" />
  10.         <PROPERTY NAME="lineUpClosingBracket" VALUE="true" />
  11.     </PROPS>
  12.     <RULES ESCAPE="\" HIGHLIGHT_DIGITS="TRUE" IGNORE_CASE="FALSE">
  13.         <!-- Comments -->
  14.         <EOL_SPAN TYPE="COMMENT1">#</EOL_SPAN>
  15.  
  16.         <!-- TYPE is LABEL so that =head1 and =cut are highlighted as so -->
  17.         <SPAN TYPE="LABEL" DELEGATE="POD">
  18.             <BEGIN AT_LINE_START="TRUE">=head1</BEGIN>
  19.             <END AT_LINE_START="TRUE">=cut</END>
  20.         </SPAN>
  21.         <SPAN TYPE="LABEL" DELEGATE="POD">
  22.             <BEGIN AT_LINE_START="TRUE">=head2</BEGIN>
  23.             <END AT_LINE_START="TRUE">=cut</END>
  24.         </SPAN>
  25.         <SPAN TYPE="LABEL" DELEGATE="POD">
  26.             <BEGIN AT_LINE_START="TRUE">=head3</BEGIN>
  27.             <END AT_LINE_START="TRUE">=cut</END>
  28.         </SPAN>
  29.         <SPAN TYPE="LABEL" DELEGATE="POD">
  30.             <BEGIN AT_LINE_START="TRUE">=head4</BEGIN>
  31.             <END AT_LINE_START="TRUE">=cut</END>
  32.         </SPAN>
  33.         <SPAN TYPE="LABEL" DELEGATE="POD">
  34.             <BEGIN AT_LINE_START="TRUE">=item</BEGIN>
  35.             <END AT_LINE_START="TRUE">=cut</END>
  36.         </SPAN>
  37.         <SPAN TYPE="LABEL" DELEGATE="POD">
  38.             <BEGIN AT_LINE_START="TRUE">=over</BEGIN>
  39.             <END AT_LINE_START="TRUE">=cut</END>
  40.         </SPAN>
  41.         <SPAN TYPE="LABEL" DELEGATE="POD">
  42.             <BEGIN AT_LINE_START="TRUE">=back</BEGIN>
  43.             <END AT_LINE_START="TRUE">=cut</END>
  44.         </SPAN>
  45.         <SPAN TYPE="LABEL" DELEGATE="POD">
  46.             <BEGIN AT_LINE_START="TRUE">=pod</BEGIN>
  47.             <END AT_LINE_START="TRUE">=cut</END>
  48.         </SPAN>
  49.         <SPAN TYPE="LABEL" DELEGATE="POD">
  50.             <BEGIN AT_LINE_START="TRUE">=for</BEGIN>
  51.             <END AT_LINE_START="TRUE">=cut</END>
  52.         </SPAN>
  53.         <SPAN TYPE="LABEL" DELEGATE="POD">
  54.             <BEGIN AT_LINE_START="TRUE">=begin</BEGIN>
  55.             <END AT_LINE_START="TRUE">=cut</END>
  56.         </SPAN>
  57.         <SPAN TYPE="LABEL" DELEGATE="POD">
  58.             <BEGIN AT_LINE_START="TRUE">=end</BEGIN>
  59.             <END AT_LINE_START="TRUE">=cut</END>
  60.         </SPAN>
  61.  
  62.         <!-- Variables -->
  63.         <SEQ TYPE="KEYWORD2">$`</SEQ>
  64.         <SEQ TYPE="KEYWORD2">$'</SEQ>
  65.         <SEQ TYPE="KEYWORD2">$"</SEQ>
  66.  
  67.         <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
  68.             <BEGIN>${</BEGIN>
  69.             <END>}</END>
  70.         </SPAN>
  71.  
  72.         <SEQ_REGEXP HASH_CHAR="$" TYPE="KEYWORD2">\$(?:#|\w)+</SEQ_REGEXP>
  73.         <SEQ_REGEXP HASH_CHAR="@" TYPE="KEYWORD2">@(?:#|\w)+</SEQ_REGEXP>
  74.         <SEQ_REGEXP HASH_CHAR="%" TYPE="KEYWORD2">%(?:#|\w)+</SEQ_REGEXP>
  75.  
  76.         <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
  77.             <BEGIN>@{</BEGIN>
  78.             <END>}</END>
  79.         </SPAN>
  80.  
  81.         <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
  82.             <BEGIN>%{</BEGIN>
  83.             <END>}</END>
  84.         </SPAN>
  85.  
  86.         <!-- Literals -->
  87.         <SPAN TYPE="LITERAL1" DELEGATE="LITERAL">
  88.             <BEGIN>"</BEGIN>
  89.             <END>"</END>
  90.         </SPAN>
  91.         <SPAN TYPE="LITERAL1">
  92.             <BEGIN>'</BEGIN>
  93.             <END>'</END>
  94.         </SPAN>
  95.  
  96.         <!-- Exec -->
  97.         <SPAN TYPE="KEYWORD3" DELEGATE="EXEC">
  98.             <BEGIN>`</BEGIN>
  99.             <END>`</END>
  100.         </SPAN>
  101.  
  102.         <!-- Heredoc -->
  103.         <SPAN_REGEXP HASH_CHAR="<" TYPE="LITERAL2" DELEGATE="LITERAL">
  104.         <BEGIN><![CDATA[<<[:space:]*(['"])([[:space:][:alnum:]_]*)\1;?\s*]]></BEGIN>
  105.         <END>$2</END>
  106.         </SPAN_REGEXP>
  107.         <SPAN_REGEXP HASH_CHAR="<" TYPE="LITERAL2" DELEGATE="LITERAL">
  108.         <BEGIN><![CDATA[<<([[:alpha:]_][[:alnum:]_]*);?\s*]]></BEGIN>
  109.         <END>$1</END>
  110.         </SPAN_REGEXP>
  111.  
  112.         <!-- jEdit 4.1 adds regular expression syntax rules so we can
  113.              highlight this sort of crap. -->
  114.  
  115.         <SEQ_REGEXP TYPE="MARKUP"
  116.                         HASH_CHAR="/"
  117.                         AT_WORD_START="TRUE"
  118.                 >/[^[:blank:]]*?[^\\]/</SEQ_REGEXP>
  119.  
  120.                 <!-- q//, qq//, qr//, qx//, tr///, y///, m//, s/// -->
  121.         <SEQ_REGEXP TYPE="MARKUP"
  122.                     HASH_CHAR="q"
  123.                     AT_WORD_START="TRUE"
  124.         >q(?:|[qrx])\{(?:.*?[^\\])*?\}</SEQ_REGEXP>
  125.  
  126.                 <SEQ_REGEXP TYPE="MARKUP"
  127.                         HASH_CHAR="t"
  128.                         AT_WORD_START="TRUE"
  129.         >tr([[:punct:]])(?:.*?[^\\])*?\1(?:.*?[^\\])*?\1</SEQ_REGEXP>
  130.  
  131.                 <SEQ_REGEXP TYPE="MARKUP"
  132.                         HASH_CHAR="y"
  133.                         AT_WORD_START="TRUE"
  134.         >y([[:punct:]])(?:.*?[^\\])*?\1(?:.*?[^\\])*?\1</SEQ_REGEXP>
  135.  
  136.                 <SEQ_REGEXP TYPE="MARKUP"
  137.                         HASH_CHAR="m"
  138.                         AT_WORD_START="TRUE"
  139.                 >m\{(?:.*?[^\\])*?\}[sgiexom]*</SEQ_REGEXP>
  140.  
  141.                 <SEQ_REGEXP TYPE="MARKUP"
  142.                         HASH_CHAR="m"
  143.                         AT_WORD_START="TRUE"
  144.                 >m([[:punct:]])(?:.*?[^\\])*?\1[sgiexom]*</SEQ_REGEXP>
  145.  
  146.         <SEQ_REGEXP TYPE="MARKUP"
  147.                         HASH_CHAR="s"
  148.                         AT_WORD_START="TRUE"
  149.                 >s\s*\{(?:.*?[^\\])*?\}\s*\{(?:.*?[^\\])*?\}[sgiexom]*</SEQ_REGEXP>
  150.  
  151.         <SEQ_REGEXP TYPE="MARKUP"
  152.                         HASH_CHAR="s"
  153.                         AT_WORD_START="TRUE"
  154.         >s([[:punct:]])(?:.*?[^\\])*?\1(?:.*?[^\\])*?\1[sgiexom]*</SEQ_REGEXP>
  155.         <!-- // -->
  156.         <SEQ_REGEXP TYPE="MARKUP"
  157.             HASH_CHAR="/"
  158.             AT_WORD_START="TRUE"
  159.         >/[^[:blank:]]*?/</SEQ_REGEXP>
  160.  
  161.         <!-- Operators -->
  162.         <SEQ TYPE="OPERATOR">|</SEQ>
  163.         <SEQ TYPE="OPERATOR">&</SEQ>
  164.         <SEQ TYPE="OPERATOR">!</SEQ>
  165.         <SEQ TYPE="OPERATOR">>=</SEQ>
  166.         <SEQ TYPE="OPERATOR"><=</SEQ>
  167.         <SEQ TYPE="OPERATOR">></SEQ>
  168.         <SEQ TYPE="OPERATOR"><</SEQ>
  169.         <SEQ TYPE="OPERATOR">=</SEQ>
  170.         <SEQ TYPE="OPERATOR">!</SEQ>
  171.         <SEQ TYPE="OPERATOR">+</SEQ>
  172.         <SEQ TYPE="OPERATOR">-</SEQ>
  173.         <SEQ TYPE="OPERATOR">/</SEQ>
  174.         <SEQ TYPE="OPERATOR">*</SEQ>
  175.         <SEQ TYPE="OPERATOR">^</SEQ>
  176.         <SEQ TYPE="OPERATOR">~</SEQ>
  177.         <SEQ TYPE="OPERATOR">}</SEQ>
  178.         <SEQ TYPE="OPERATOR">{</SEQ>
  179.         <SEQ TYPE="OPERATOR">?</SEQ>
  180.         <SEQ TYPE="OPERATOR">:</SEQ>
  181.  
  182.         <!-- Keywords -->
  183.         <KEYWORDS>
  184.             <KEYWORD1>new</KEYWORD1>
  185.             <KEYWORD1>if</KEYWORD1>
  186.             <KEYWORD1>until</KEYWORD1>
  187.             <KEYWORD1>while</KEYWORD1>
  188.             <KEYWORD1>elsif</KEYWORD1>
  189.             <KEYWORD1>else</KEYWORD1>
  190.             <KEYWORD1>unless</KEYWORD1>
  191.             <KEYWORD1>for</KEYWORD1>
  192.             <KEYWORD1>foreach</KEYWORD1>
  193.             <KEYWORD1>BEGIN</KEYWORD1>
  194.             <KEYWORD1>END</KEYWORD1>
  195.  
  196.             <OPERATOR>cmp</OPERATOR>
  197.             <OPERATOR>eq</OPERATOR>
  198.             <OPERATOR>ne</OPERATOR>
  199.             <OPERATOR>le</OPERATOR>
  200.             <OPERATOR>ge</OPERATOR>
  201.             <OPERATOR>not</OPERATOR>
  202.             <OPERATOR>and</OPERATOR>
  203.             <OPERATOR>or</OPERATOR>
  204.             <OPERATOR>xor</OPERATOR>
  205.  
  206.             <!-- At least attempt to highlight 'x', although this misses some -->
  207.             <OPERATOR>x</OPERATOR>
  208.  
  209.             <!--
  210.                 The following function list was derived from the perlfunc man
  211.                 page, Perl version 5.00503
  212.  
  213.                 Certain keywords have been commented out where they appear more
  214.                 than once, and the y///, qx//, etc. functions have been removed,
  215.                 since they would are colorized not as keywords, but with separate
  216.                 rules.
  217.             -->
  218.  
  219.             <!-- Functions for SCALARs or strings -->
  220.             <KEYWORD3>chomp</KEYWORD3>
  221.             <KEYWORD3>chop</KEYWORD3>
  222.             <KEYWORD3>chr</KEYWORD3>
  223.             <KEYWORD3>crypt</KEYWORD3>
  224.             <KEYWORD3>hex</KEYWORD3>
  225.             <KEYWORD3>index</KEYWORD3>
  226.             <KEYWORD3>lc</KEYWORD3>
  227.             <KEYWORD3>lcfirst</KEYWORD3>
  228.             <KEYWORD3>length</KEYWORD3>
  229.             <KEYWORD3>oct</KEYWORD3>
  230.             <KEYWORD3>ord</KEYWORD3>
  231.             <KEYWORD3>pack</KEYWORD3>
  232.             <KEYWORD3>reverse</KEYWORD3>
  233.             <KEYWORD3>rindex</KEYWORD3>
  234.             <KEYWORD3>sprintf</KEYWORD3>
  235.             <KEYWORD3>substr</KEYWORD3>
  236.             <KEYWORD3>uc</KEYWORD3>
  237.             <KEYWORD3>ucfirst</KEYWORD3>
  238.  
  239.             <!-- Regular expressions and pattern matching -->
  240.             <KEYWORD3>pos</KEYWORD3>
  241.             <KEYWORD3>quotemeta</KEYWORD3>
  242.             <KEYWORD3>split</KEYWORD3>
  243.             <KEYWORD3>study</KEYWORD3>
  244.  
  245.             <!-- Numeric functions -->
  246.             <KEYWORD3>abs</KEYWORD3>
  247.             <KEYWORD3>atan2</KEYWORD3>
  248.             <KEYWORD3>cos</KEYWORD3>
  249.             <KEYWORD3>exp</KEYWORD3>
  250.             <!--<KEYWORD3>hex</KEYWORD3>-->
  251.             <KEYWORD3>int</KEYWORD3>
  252.             <KEYWORD3>log</KEYWORD3>
  253.             <!--<KEYWORD3>oct</KEYWORD3>-->
  254.             <KEYWORD3>rand</KEYWORD3>
  255.             <KEYWORD3>sin</KEYWORD3>
  256.             <KEYWORD3>sqrt</KEYWORD3>
  257.             <KEYWORD3>srand</KEYWORD3>
  258.  
  259.             <!-- Functions for real @ARRAYs -->
  260.             <KEYWORD3>pop</KEYWORD3>
  261.             <KEYWORD3>push</KEYWORD3>
  262.             <KEYWORD3>shift</KEYWORD3>
  263.             <KEYWORD3>splice</KEYWORD3>
  264.             <KEYWORD3>unshift</KEYWORD3>
  265.  
  266.             <!-- Functions for list data -->
  267.             <KEYWORD3>grep</KEYWORD3>
  268.             <KEYWORD3>join</KEYWORD3>
  269.             <KEYWORD3>map</KEYWORD3>
  270.             <!--<KEYWORD3>reverse</KEYWORD3>-->
  271.             <KEYWORD3>sort</KEYWORD3>
  272.             <KEYWORD3>unpack</KEYWORD3>
  273.  
  274.             <!-- Functions for real %HASHes -->
  275.             <KEYWORD3>delete</KEYWORD3>
  276.             <KEYWORD3>each</KEYWORD3>
  277.             <KEYWORD3>exists</KEYWORD3>
  278.             <KEYWORD3>keys</KEYWORD3>
  279.             <KEYWORD3>values</KEYWORD3>
  280.  
  281.             <!-- Input and output functions -->
  282.             <KEYWORD3>binmode</KEYWORD3>
  283.             <KEYWORD3>close</KEYWORD3>
  284.             <KEYWORD3>closedir</KEYWORD3>
  285.             <KEYWORD3>dbmclose</KEYWORD3>
  286.             <KEYWORD3>dbmopen</KEYWORD3>
  287.             <!--<KEYWORD3>die</KEYWORD3>-->
  288.             <KEYWORD3>eof</KEYWORD3>
  289.             <KEYWORD3>fileno</KEYWORD3>
  290.             <KEYWORD3>flock</KEYWORD3>
  291.             <KEYWORD3>format</KEYWORD3>
  292.             <KEYWORD3>getc</KEYWORD3>
  293.             <KEYWORD3>print</KEYWORD3>
  294.             <KEYWORD3>printf</KEYWORD3>
  295.             <KEYWORD3>read</KEYWORD3>
  296.             <KEYWORD3>readdir</KEYWORD3>
  297.             <KEYWORD3>rewinddir</KEYWORD3>
  298.             <KEYWORD3>seek</KEYWORD3>
  299.             <KEYWORD3>seekdir</KEYWORD3>
  300.             <KEYWORD3>select</KEYWORD3>
  301.             <KEYWORD3>syscall</KEYWORD3>
  302.             <KEYWORD3>sysread</KEYWORD3>
  303.             <KEYWORD3>sysseek</KEYWORD3>
  304.             <KEYWORD3>syswrite</KEYWORD3>
  305.             <KEYWORD3>tell</KEYWORD3>
  306.             <KEYWORD3>telldir</KEYWORD3>
  307.             <KEYWORD3>truncate</KEYWORD3>
  308.             <KEYWORD3>warn</KEYWORD3>
  309.             <KEYWORD3>write</KEYWORD3>
  310.  
  311.             <!-- Functions for fixed length data or records -->
  312.             <!--<KEYWORD3>pack</KEYWORD3>-->
  313.             <!--<KEYWORD3>read</KEYWORD3>-->
  314.             <!--<KEYWORD3>syscall</KEYWORD3>-->
  315.             <!--<KEYWORD3>sysread</KEYWORD3>-->
  316.             <!--<KEYWORD3>syswrite</KEYWORD3>-->
  317.             <!--<KEYWORD3>unpack</KEYWORD3>-->
  318.             <KEYWORD3>vec</KEYWORD3>
  319.  
  320.             <!-- Functions for filehandles, files, or directories -->
  321.             <KEYWORD3>chdir</KEYWORD3>
  322.             <KEYWORD3>chmod</KEYWORD3>
  323.             <KEYWORD3>chown</KEYWORD3>
  324.             <KEYWORD3>chroot</KEYWORD3>
  325.             <KEYWORD3>fcntl</KEYWORD3>
  326.             <KEYWORD3>glob</KEYWORD3>
  327.             <KEYWORD3>ioctl</KEYWORD3>
  328.             <KEYWORD3>link</KEYWORD3>
  329.             <KEYWORD3>lstat</KEYWORD3>
  330.             <KEYWORD3>mkdir</KEYWORD3>
  331.             <KEYWORD3>open</KEYWORD3>
  332.             <KEYWORD3>opendir</KEYWORD3>
  333.             <KEYWORD3>readlink</KEYWORD3>
  334.             <KEYWORD3>rename</KEYWORD3>
  335.             <KEYWORD3>rmdir</KEYWORD3>
  336.             <KEYWORD3>stat</KEYWORD3>
  337.             <KEYWORD3>symlink</KEYWORD3>
  338.             <KEYWORD3>umask</KEYWORD3>
  339.             <KEYWORD3>unlink</KEYWORD3>
  340.             <KEYWORD3>utime</KEYWORD3>
  341.  
  342.             <!-- Keywords related to the control flow of your perl program -->
  343.             <KEYWORD1>caller</KEYWORD1>
  344.             <KEYWORD1>continue</KEYWORD1>
  345.             <KEYWORD1>die</KEYWORD1>
  346.             <KEYWORD1>do</KEYWORD1>
  347.             <KEYWORD1>dump</KEYWORD1>
  348.             <KEYWORD1>eval</KEYWORD1>
  349.             <KEYWORD1>exit</KEYWORD1>
  350.             <KEYWORD1>goto</KEYWORD1>
  351.             <KEYWORD1>last</KEYWORD1>
  352.             <KEYWORD1>next</KEYWORD1>
  353.             <KEYWORD1>redo</KEYWORD1>
  354.             <KEYWORD1>return</KEYWORD1>
  355.             <KEYWORD1>sub</KEYWORD1>
  356.             <KEYWORD1>wantarray</KEYWORD1>
  357.  
  358.             <!-- Keywords related to scoping -->
  359.             <!--<KEYWORD1>caller</KEYWORD1>-->
  360.             <!--<KEYWORD1>import</KEYWORD1>-->
  361.             <KEYWORD1>local</KEYWORD1>
  362.             <KEYWORD1>my</KEYWORD1>
  363.             <KEYWORD1>our</KEYWORD1>
  364.             <KEYWORD1>package</KEYWORD1>
  365.             <KEYWORD1>use</KEYWORD1>
  366.  
  367.             <!-- Miscellaneous functions -->
  368.             <KEYWORD3>defined</KEYWORD3>
  369.             <!--<KEYWORD3>dump</KEYWORD3>-->
  370.             <!--<KEYWORD3>eval</KEYWORD3>-->
  371.             <KEYWORD3>formline</KEYWORD3>
  372.             <!--<KEYWORD3>local</KEYWORD3>-->
  373.             <!--<KEYWORD3>my</KEYWORD3>-->
  374.             <KEYWORD3>reset</KEYWORD3>
  375.             <KEYWORD3>scalar</KEYWORD3>
  376.             <KEYWORD3>undef</KEYWORD3>
  377.             <!--<KEYWORD3>wantarray</KEYWORD3>-->
  378.  
  379.             <!-- Functions for processes and process groups -->
  380.             <KEYWORD3>alarm</KEYWORD3>
  381.             <KEYWORD3>exec</KEYWORD3>
  382.             <KEYWORD3>fork</KEYWORD3>
  383.             <KEYWORD3>getpgrp</KEYWORD3>
  384.             <KEYWORD3>getppid</KEYWORD3>
  385.             <KEYWORD3>getpriority</KEYWORD3>
  386.             <KEYWORD3>kill</KEYWORD3>
  387.             <KEYWORD3>pipe</KEYWORD3>
  388.             <KEYWORD3>setpgrp</KEYWORD3>
  389.             <KEYWORD3>setpriority</KEYWORD3>
  390.             <KEYWORD3>sleep</KEYWORD3>
  391.             <KEYWORD3>system</KEYWORD3>
  392.             <KEYWORD3>times</KEYWORD3>
  393.             <KEYWORD3>wait</KEYWORD3>
  394.             <KEYWORD3>waitpid</KEYWORD3>
  395.  
  396.             <!-- Keywords related to perl modules -->
  397.             <!--<KEYWORD1>do</KEYWORD1>-->
  398.             <KEYWORD1>import</KEYWORD1>
  399.             <KEYWORD1>no</KEYWORD1>
  400.             <!--<KEYWORD1>package</KEYWORD1>-->
  401.             <KEYWORD1>require</KEYWORD1>
  402.             <!--<KEYWORD1>use</KEYWORD1>-->
  403.  
  404.             <!-- Keywords related to classes and object-orientedness -->
  405.             <KEYWORD3>bless</KEYWORD3>
  406.             <!--<KEYWORD3>dbmclose</KEYWORD3>-->
  407.             <!--<KEYWORD3>dbmopen</KEYWORD3>-->
  408.             <!--<KEYWORD3>package</KEYWORD3>-->
  409.             <KEYWORD3>ref</KEYWORD3>
  410.             <KEYWORD3>tie</KEYWORD3>
  411.             <KEYWORD3>tied</KEYWORD3>
  412.             <KEYWORD3>untie</KEYWORD3>
  413.             <!--<KEYWORD3>use</KEYWORD3>-->
  414.  
  415.             <!-- Low-level socket functions -->
  416.             <KEYWORD3>accept</KEYWORD3>
  417.             <KEYWORD3>bind</KEYWORD3>
  418.             <KEYWORD3>connect</KEYWORD3>
  419.             <KEYWORD3>getpeername</KEYWORD3>
  420.             <KEYWORD3>getsockname</KEYWORD3>
  421.             <KEYWORD3>getsockopt</KEYWORD3>
  422.             <KEYWORD3>listen</KEYWORD3>
  423.             <KEYWORD3>recv</KEYWORD3>
  424.             <KEYWORD3>send</KEYWORD3>
  425.             <KEYWORD3>setsockopt</KEYWORD3>
  426.             <KEYWORD3>shutdown</KEYWORD3>
  427.             <KEYWORD3>socket</KEYWORD3>
  428.             <KEYWORD3>socketpair</KEYWORD3>
  429.  
  430.             <!-- System V interprocess communication functions -->
  431.             <KEYWORD3>msgctl</KEYWORD3>
  432.             <KEYWORD3>msgget</KEYWORD3>
  433.             <KEYWORD3>msgrcv</KEYWORD3>
  434.             <KEYWORD3>msgsnd</KEYWORD3>
  435.             <KEYWORD3>semctl</KEYWORD3>
  436.             <KEYWORD3>semget</KEYWORD3>
  437.  
  438.             <KEYWORD3>semop</KEYWORD3>
  439.             <KEYWORD3>shmctl</KEYWORD3>
  440.             <KEYWORD3>shmget</KEYWORD3>
  441.             <KEYWORD3>shmread</KEYWORD3>
  442.             <KEYWORD3>shmwrite</KEYWORD3>
  443.  
  444.             <!-- Fetching user and group info -->
  445.             <KEYWORD3>endgrent</KEYWORD3>
  446.             <KEYWORD3>endhostent</KEYWORD3>
  447.             <KEYWORD3>endnetent</KEYWORD3>
  448.             <KEYWORD3>endpwent</KEYWORD3>
  449.             <KEYWORD3>getgrent</KEYWORD3>
  450.             <KEYWORD3>getgrgid</KEYWORD3>
  451.             <KEYWORD3>getgrnam</KEYWORD3>
  452.             <KEYWORD3>getlogin</KEYWORD3>
  453.             <KEYWORD3>getpwent</KEYWORD3>
  454.             <KEYWORD3>getpwnam</KEYWORD3>
  455.             <KEYWORD3>getpwuid</KEYWORD3>
  456.             <KEYWORD3>setgrent</KEYWORD3>
  457.             <KEYWORD3>setpwent</KEYWORD3>
  458.  
  459.             <!-- Fetching network info -->
  460.             <KEYWORD3>endprotoent</KEYWORD3>
  461.             <KEYWORD3>endservent</KEYWORD3>
  462.             <KEYWORD3>gethostbyaddr</KEYWORD3>
  463.             <KEYWORD3>gethostbyname</KEYWORD3>
  464.             <KEYWORD3>gethostent</KEYWORD3>
  465.             <KEYWORD3>getnetbyaddr</KEYWORD3>
  466.             <KEYWORD3>getnetbyname</KEYWORD3>
  467.             <KEYWORD3>getnetent</KEYWORD3>
  468.             <KEYWORD3>getprotobyname</KEYWORD3>
  469.             <KEYWORD3>getprotobynumber</KEYWORD3>
  470.             <KEYWORD3>getprotoent</KEYWORD3>
  471.             <KEYWORD3>getservbyname</KEYWORD3>
  472.             <KEYWORD3>getservbyport</KEYWORD3>
  473.             <KEYWORD3>getservent</KEYWORD3>
  474.             <KEYWORD3>sethostent</KEYWORD3>
  475.             <KEYWORD3>setnetent</KEYWORD3>
  476.             <KEYWORD3>setprotoent</KEYWORD3>
  477.             <KEYWORD3>setservent</KEYWORD3>
  478.  
  479.             <!-- Time-related functions -->
  480.             <KEYWORD3>gmtime</KEYWORD3>
  481.             <KEYWORD3>localtime</KEYWORD3>
  482.             <KEYWORD3>time</KEYWORD3>
  483.             <!--<KEYWORD3>times</KEYWORD3>-->
  484.         </KEYWORDS>
  485.     </RULES>
  486.  
  487.     <RULES SET="POD" DEFAULT="COMMENT2">
  488.         <MARK_FOLLOWING TYPE="LABEL" AT_LINE_START="TRUE">=</MARK_FOLLOWING>
  489.     </RULES>
  490.  
  491.     <RULES SET="LITERAL" DEFAULT="LITERAL1" ESCAPE="\">
  492.         <!-- Variables -->
  493.         <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
  494.             <BEGIN>${</BEGIN>
  495.             <END>}</END>
  496.         </SPAN>
  497.  
  498.         <MARK_FOLLOWING TYPE="KEYWORD2">$#</MARK_FOLLOWING>
  499.         <MARK_FOLLOWING TYPE="KEYWORD2">$</MARK_FOLLOWING>
  500.  
  501.         <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
  502.             <BEGIN>@{</BEGIN>
  503.             <END>}</END>
  504.         </SPAN>
  505.  
  506.         <MARK_FOLLOWING TYPE="KEYWORD2">@</MARK_FOLLOWING>
  507.  
  508.         <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
  509.             <BEGIN>%{</BEGIN>
  510.             <END>}</END>
  511.         </SPAN>
  512.  
  513.         <MARK_FOLLOWING TYPE="KEYWORD2">%</MARK_FOLLOWING>
  514.  
  515.         <SEQ TYPE="LITERAL1">|</SEQ>
  516.         <SEQ TYPE="LITERAL1">&</SEQ>
  517.         <SEQ TYPE="LITERAL1">!</SEQ>
  518.         <SEQ TYPE="LITERAL1">></SEQ>
  519.         <SEQ TYPE="LITERAL1"><</SEQ>
  520.         <SEQ TYPE="LITERAL1">)</SEQ>
  521.         <SEQ TYPE="LITERAL1">(</SEQ>
  522.         <SEQ TYPE="LITERAL1">=</SEQ>
  523.         <SEQ TYPE="LITERAL1">!</SEQ>
  524.         <SEQ TYPE="LITERAL1">+</SEQ>
  525.         <SEQ TYPE="LITERAL1">-</SEQ>
  526.         <SEQ TYPE="LITERAL1">/</SEQ>
  527.         <SEQ TYPE="LITERAL1">*</SEQ>
  528.         <SEQ TYPE="LITERAL1">^</SEQ>
  529.         <SEQ TYPE="LITERAL1">~</SEQ>
  530.         <SEQ TYPE="LITERAL1">}</SEQ>
  531.         <SEQ TYPE="LITERAL1">{</SEQ>
  532.         <SEQ TYPE="LITERAL1">.</SEQ>
  533.         <SEQ TYPE="LITERAL1">,</SEQ>
  534.         <SEQ TYPE="LITERAL1">;</SEQ>
  535.         <SEQ TYPE="LITERAL1">]</SEQ>
  536.         <SEQ TYPE="LITERAL1">[</SEQ>
  537.         <SEQ TYPE="LITERAL1">?</SEQ>
  538.         <SEQ TYPE="LITERAL1">:</SEQ>
  539.     </RULES>
  540.  
  541.     <RULES SET="EXEC" DEFAULT="KEYWORD3" ESCAPE="\">
  542.         <!-- Comments -->
  543.         <EOL_SPAN TYPE="COMMENT1">#</EOL_SPAN>
  544.  
  545.         <!-- Variables -->
  546.         <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">
  547.             <BEGIN>${</BEGIN>
  548.             <END>}</END>
  549.         </SPAN>
  550.  
  551.         <MARK_FOLLOWING TYPE="KEYWORD2">$#</MARK_FOLLOWING>
  552.         <MARK_FOLLOWING TYPE="KEYWORD2">$</MARK_FOLLOWING>
  553.  
  554.         <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">
  555.             <BEGIN>@{</BEGIN>
  556.             <END>}</END>
  557.         </SPAN>
  558.  
  559.         <MARK_FOLLOWING TYPE="KEYWORD2">@</MARK_FOLLOWING>
  560.  
  561.         <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">
  562.             <BEGIN>%{</BEGIN>
  563.             <END>}</END>
  564.         </SPAN>
  565.  
  566.         <MARK_FOLLOWING TYPE="KEYWORD2">%</MARK_FOLLOWING>
  567.     </RULES>
  568.  
  569.     <RULES SET="VARIABLE" DEFAULT="KEYWORD2" ESCAPE="\">
  570.         <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
  571.             <BEGIN>{</BEGIN>
  572.             <END>}</END>
  573.         </SPAN>
  574.  
  575.         <SEQ TYPE="OPERATOR">-></SEQ>
  576.     </RULES>
  577.  
  578.     <RULES SET="REGEXP" DEFAULT="MARKUP" ESCAPE="\">
  579.         <SEQ TYPE="MARKUP">)(</SEQ>
  580.         <SEQ TYPE="MARKUP">)[</SEQ>
  581.         <SEQ TYPE="MARKUP">){</SEQ>
  582.         <SEQ TYPE="MARKUP">](</SEQ>
  583.         <SEQ TYPE="MARKUP">][</SEQ>
  584.         <SEQ TYPE="MARKUP">]{</SEQ>
  585.         <SEQ TYPE="MARKUP">}(</SEQ>
  586.         <SEQ TYPE="MARKUP">}[</SEQ>
  587.         <SEQ TYPE="MARKUP">}{</SEQ>
  588.         <SPAN TYPE="MARKUP" DELEGATE="REGEXP">
  589.             <BEGIN>(</BEGIN>
  590.             <END>)</END>
  591.         </SPAN>
  592.         <SPAN TYPE="MARKUP" DELEGATE="REGEXP">
  593.             <BEGIN>[</BEGIN>
  594.             <END>]</END>
  595.         </SPAN>
  596.         <SPAN TYPE="MARKUP" DELEGATE="REGEXP">
  597.             <BEGIN>{</BEGIN>
  598.             <END>}</END>
  599.         </SPAN>
  600.     </RULES>
  601. </MODE>
  602.